meson: replace gentypefuncs.d with python script
authorTim-Philipp Müller <tim@centricular.com>
Sat, 10 Sep 2016 11:10:59 +0000 (12:10 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 3 May 2017 14:10:51 +0000 (15:10 +0100)
gtk/gentypefuncs.d [deleted file]
gtk/gentypefuncs.py [new file with mode: 0644]
gtk/meson.build

diff --git a/gtk/gentypefuncs.d b/gtk/gentypefuncs.d
deleted file mode 100755 (executable)
index f7a0528..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/rdmd
-
-import std.stdio;
-import std.file;
-import std.process;
-import std.regex;
-import std.array;
-import std.algorithm;
-
-void main(string[] args) {
-       string out_file   = args[1];
-       string[] in_files = args[3..$];
-
-       auto regex = ctRegex!("g[td]k_[a-zA-Z0-9_]*_get_type");
-
-       string[] funcs;
-
-       foreach (filename; in_files) {
-               auto file = File(filename);
-               foreach (line; file.byLine()) {
-                       auto match = line.matchFirst(regex);
-                       if (!match.empty) {
-                               // *cough*, not exactly the fastest way to do this...
-                               if (!funcs.canFind(match.hit))
-                                       funcs ~= cast(string)match.hit.idup;
-                       }
-               }
-       }
-
-       funcs.sort();
-
-       //writeln(funcs);
-       //writeln(funcs.length);
-
-       string file_output = "G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n";
-       foreach (func; funcs) {
-               if (func.startsWith("gdk_x11") || func.startsWith("gtk_socket") || func.startsWith("gtk_plug")) {
-                       file_output ~= "#ifdef GDK_WINDOWING_X11\n*tp++ = " ~ func ~ "();\n#endif\n";
-               } else if (func != ("gtk_text_handle_get_type")){
-                       file_output ~= "*tp++ = " ~ func ~ "();\n";
-               }
-       }
-
-       std.file.write(out_file, file_output);
-}
diff --git a/gtk/gentypefuncs.py b/gtk/gentypefuncs.py
new file mode 100644 (file)
index 0000000..46beebd
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import sys
+import re
+import os
+
+debug = os.getenv('GTK_GENTYPEFUNCS_DEBUG') is not None
+
+out_file = sys.argv[1]
+in_files = sys.argv[2:]
+
+funcs = []
+
+
+if debug: print 'Output file: ', out_file
+
+if debug: print len(in_files), 'input files'
+
+for filename in in_files:
+  if debug: print 'Input file: ', filename
+  with open(filename, "r") as f:
+    for line in f:
+      line = line.rstrip('\n').rstrip('\r')
+      # print line
+      match = re.search(r'\bg[td]k_[a-zA-Z0-9_]*_get_type\b', line)
+      if match:
+        func = match.group(0)
+        if not func in funcs:
+          funcs.append(func)
+          if debug: print 'Found', func
+
+file_output = 'G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n'
+
+funcs = sorted(funcs)
+
+for f in funcs:
+  if f.startswith('gdk_x11') or f.startswith('gtk_socket') or f.startswith('gtk_plug'):
+    file_output += '#ifdef GDK_WINDOWING_X11\n'
+    file_output += '*tp++ = {0}();\n'.format(f)
+    file_output += '#endif\n'
+  else:
+    file_output += '*tp++ = {0}();\n'.format(f)
+
+if debug: print len(funcs), 'functions'
+
+ofile = open(out_file, "w")
+ofile.write(file_output)
+ofile.close()
index 0a655ebdd2c867904911eb3a94bb298f41c2134e..b0745575fcd77bc729825dddbbbe8c1ae4da1cd2 100644 (file)
@@ -741,8 +741,7 @@ gtkprivatetypebuiltins_c = custom_target(
   command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gtkprivatetypebuiltins.c.template', '@OUTPUT@', '@INPUT@']
 )
 
-d_compiler = find_program('dmd')
-gentypefuncs_prog = find_program('gentypefuncs.d')
+gentypefuncs_prog = find_program('gentypefuncs.py')
 # Generate gtktypefuncs.c
 typefuncs = custom_target(
   'typefuncs',